package org.jeecgframework.web.system.pojo.base;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.lang.String;
import java.lang.Double;
import java.lang.Integer;
import java.math.BigDecimal;

import javax.persistence.*;
import javax.xml.soap.Text;

import java.sql.Blob;

import org.codehaus.jackson.annotate.JsonIgnore;
import org.hibernate.annotations.GenericGenerator;

import org.jeecgframework.poi.excel.annotation.Excel;

/**
 * @Title: Entity
 * @Description: 采购单表
 * @author onlineGenerator
 * @date 2016-08-03 15:35:40
 * @version V1.0
 *
 */
@Entity
@Table(name = "cbs_procurement_note", schema = "")
@SuppressWarnings("serial")
public class CbsProcurementNoteEntity implements java.io.Serializable {
    /**ID */
    private java.lang.String id;
    /**客户类型  */
    @Excel(name="客户类型  0.客户 1.第三方 ")
    private java.lang.String clientType;

    /*订单编号*/
    private String procurementNo;

    /**采购方  */
    @Excel(name="采购方  ")
    private TSDepart procurement;
    /**是否上门服务  */
    @Excel(name="是否上门服务  ")
    private java.lang.String isOnsiteServices;
    /**服务地点 */
    @Excel(name="服务地点 ")
    private java.lang.String servicePlace;
    /**保修期  */
    @Excel(name="保修期  ")
    private java.lang.String warranty;
    /**服务前提 */
    @Excel(name="服务前提 ")
    private java.lang.String servicesPremise;
    /**备注 */
    @Excel(name="备注 ")
    private java.lang.String comment;
    /**服务描述 */
    @Excel(name="服务描述 ")
    private java.lang.String servicesDes;
    /**来源 0.草稿 1.PC 2.微信,3：未注册用户或银牌用户*/
    @Excel(name="来源")
    private java.lang.String source;
    /**状态 0.待处理 1.处理中 2.已完成 3.已取消,4.草稿 */
    @Excel(name="状态  ")
    private java.lang.String state;
    /**createName*/
    private java.lang.String createName;
    /**createBy*/
    private java.lang.String createBy;
    /**createDate*/
    private java.util.Date createDate;
    /**updateName*/
    private java.lang.String updateName;
    /**updateBy*/
    private java.lang.String updateBy;
    /**updateDate*/
    private java.util.Date updateDate;
    /**联系人名称*/
    private String contactName;
    /**联系人电话*/
    private String contactPhone;
    /**联系人邮箱*/
    private String contactMail;
    /**联系人传真*/
    private String contactFax;
    /*详细地址*/
    private String fullAddress;

    @Column(name = "gathering_time")
    public Date getGatheringTime() {
        return gatheringTime;
    }

    public void setGatheringTime(Date gatheringTime) {
        this.gatheringTime = gatheringTime;
    }

    /*收款时间*/
    private Date gatheringTime;

    /**影院关联*/
    private ZyCinemaEntity cinema;
    /**零件关联*/
    private List<CbsProcurementPartEntity> partList;
    /**设备关联*/
    private List<CbsProcurementPartEsEntity> paertEsList;
    /**报价单关联*/
    private List<CbsQuotationEntity> quotationList;

    private CbsInvoiceSnapEntity invoice;

    private Double totalPrice;

    private String cinemaName;

    private String snNo;


    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  ID
     */
    @Id
    @GeneratedValue(generator = "paymentableGenerator")
    @GenericGenerator(name = "paymentableGenerator", strategy = "uuid")
    @Column(name ="ID",nullable=false,length=32)
    public java.lang.String getId(){
        return this.id;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  ID
     */
    public void setId(java.lang.String id){
        this.id = id;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  客户类型
     */
    @Column(name ="CLIENT_TYPE",nullable=true,length=32)
    public java.lang.String getClientType(){
        return this.clientType;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  客户类型
     */
    public void setClientType(java.lang.String clientType){
        this.clientType = clientType;
    }

    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  是否上门服务
     */
    @Column(name ="IS_ONSITE_SERVICES",nullable=true,length=32)
    public java.lang.String getIsOnsiteServices(){
        return this.isOnsiteServices;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  是否上门服务
     */
    public void setIsOnsiteServices(java.lang.String isOnsiteServices){
        this.isOnsiteServices = isOnsiteServices;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  服务地点
     */
    @Column(name ="SERVICE_PLACE",nullable=true,length=100)
    public java.lang.String getServicePlace(){
        return this.servicePlace;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  服务地点
     */
    public void setServicePlace(java.lang.String servicePlace){
        this.servicePlace = servicePlace;
    }

    /**
     *方法: 取得java.util.Date
     *@return: java.lang.String  保修期
     */
    @Column(name ="WARRANTY",nullable=true)
    public java.lang.String getWarranty() {
        return warranty;
    }

    public void setWarranty(java.lang.String warranty) {
        this.warranty = warranty;
    }

    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  服务前提
     */
    @Column(name ="SERVICES_PREMISE",nullable=true,length=500)
    public java.lang.String getServicesPremise(){
        return this.servicesPremise;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  服务前提
     */
    public void setServicesPremise(java.lang.String servicesPremise){
        this.servicesPremise = servicesPremise;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  备注
     */
    @Column(name ="COMMENT",nullable=true,length=500)
    public java.lang.String getComment(){
        return this.comment;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  备注
     */
    public void setComment(java.lang.String comment){
        this.comment = comment;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  服务描述
     */
    @Column(name ="SERVICES_DES",nullable=true,length=1000)
    public java.lang.String getServicesDes(){
        return this.servicesDes;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  服务描述
     */
    public void setServicesDes(java.lang.String servicesDes){
        this.servicesDes = servicesDes;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  来源
     */
    @Column(name ="SOURCE",nullable=true,length=100)
    public java.lang.String getSource(){
        return this.source;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  来源
     */
    public void setSource(java.lang.String source){
        this.source = source;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  状态
     */
    @Column(name ="STATE",nullable=true,length=32)
    public java.lang.String getState(){
        return this.state;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  状态
     */
    public void setState(java.lang.String state){
        this.state = state;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  createName
     */
    @Column(name ="CREATE_NAME",nullable=true,length=50)
    public java.lang.String getCreateName(){
        return this.createName;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  createName
     */
    public void setCreateName(java.lang.String createName){
        this.createName = createName;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  createBy
     */
    @Column(name ="CREATE_BY",nullable=true,length=50)
    public java.lang.String getCreateBy(){
        return this.createBy;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  createBy
     */
    public void setCreateBy(java.lang.String createBy){
        this.createBy = createBy;
    }
    /**
     *方法: 取得java.util.Date
     *@return: java.util.Date  createDate
     */
    @Column(name ="CREATE_DATE",nullable=true)
    public java.util.Date getCreateDate(){
        return this.createDate;
    }

    /**
     *方法: 设置java.util.Date
     *@param: java.util.Date  createDate
     */
    public void setCreateDate(java.util.Date createDate){
        this.createDate = createDate;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  updateName
     */
    @Column(name ="UPDATE_NAME",nullable=true,length=50)
    public java.lang.String getUpdateName(){
        return this.updateName;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  updateName
     */
    public void setUpdateName(java.lang.String updateName){
        this.updateName = updateName;
    }
    /**
     *方法: 取得java.lang.String
     *@return: java.lang.String  updateBy
     */
    @Column(name ="UPDATE_BY",nullable=true,length=50)
    public java.lang.String getUpdateBy(){
        return this.updateBy;
    }

    /**
     *方法: 设置java.lang.String
     *@param: java.lang.String  updateBy
     */
    public void setUpdateBy(java.lang.String updateBy){
        this.updateBy = updateBy;
    }
    /**
     *方法: 取得java.util.Date
     *@return: java.util.Date  updateDate
     */
    @Column(name ="UPDATE_DATE",nullable=true)
    public java.util.Date getUpdateDate(){
        return this.updateDate;
    }

    /**
     *方法: 设置java.util.Date
     *@param: java.util.Date  updateDate
     */
    public void setUpdateDate(java.util.Date updateDate){
        this.updateDate = updateDate;
    }

    @JsonIgnore
    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name="PROCUREMENT_NOTE_ID")
    public List<CbsProcurementPartEntity> getPartList() {
        return partList;
    }

    public void setPartList(List<CbsProcurementPartEntity> partList) {
        this.partList = partList;
    }
    @JsonIgnore
    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name="PROCUREMENT_NOTE_ID")
    public List<CbsProcurementPartEsEntity> getPaertEsList() {
        return paertEsList;
    }

    public void setPaertEsList(List<CbsProcurementPartEsEntity> paertEsList) {
        this.paertEsList = paertEsList;
    }

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="CINEMA_ID")
    public ZyCinemaEntity getCinema() {
        return cinema;
    }

    public void setCinema(ZyCinemaEntity cinema) {
        this.cinema = cinema;
    }

    @JsonIgnore
    @OneToMany(fetch = FetchType.LAZY)
    @JoinColumn(name="PROCUREMENT_ID")
    public List<CbsQuotationEntity> getQuotationList() {
        return quotationList;
    }

    public void setQuotationList(List<CbsQuotationEntity> quotationList) {
        this.quotationList = quotationList;
    }

    @Column(name ="contact_name",nullable=true)
    public String getContactName() {
        return contactName;
    }

    public void setContactName(String contactName) {
        this.contactName = contactName;
    }

    @Column(name ="contact_phone",nullable=true)
    public String getContactPhone() {
        return contactPhone;
    }

    public void setContactPhone(String contactPhone) {
        this.contactPhone = contactPhone;
    }

    @Column(name ="contact_mail",nullable=true)
    public String getContactMail() {
        return contactMail;
    }

    public void setContactMail(String contactMail) {
        this.contactMail = contactMail;
    }

    @Column(name ="contact_fax",nullable=true)
    public String getContactFax() {
        return contactFax;
    }

    public void setContactFax(String contactFax) {
        this.contactFax = contactFax;
    }

    @ManyToOne
    @JoinColumn(name = "invoice_id")
    public CbsInvoiceSnapEntity getInvoice() {
        return invoice;
    }

    public void setInvoice(CbsInvoiceSnapEntity invoice) {
        this.invoice = invoice;
    }

    @Column(name = "procument_no")
    public String getProcurementNo() {
        return procurementNo;
    }

    public void setProcurementNo(String procurementNo) {
        this.procurementNo = procurementNo;
    }

    @JsonIgnore
    @ManyToOne(cascade= CascadeType.DETACH,fetch=FetchType.LAZY,optional = false)
    @JoinColumn(name ="procurement")
    public TSDepart getProcurement() {
        return procurement;
    }

    public void setProcurement(TSDepart procurement) {
        this.procurement = procurement;
    }

    @Transient
    public Double getTotalPrice() {
        return totalPrice;
    }

    public void setTotalPrice(Double totalPrice) {
        this.totalPrice = totalPrice;
    }

    @Column(name = "full_address")
    public String getFullAddress() {
        return fullAddress;
    }

    public void setFullAddress(String fullAddress) {
        this.fullAddress = fullAddress;
    }

    @Column(name = "cinema_name")
    public String getCinemaName() {
        return cinemaName;
    }

    public void setCinemaName(String cinemaName) {
        this.cinemaName = cinemaName;
    }

    @Column(name = "sn_no")
    public String getSnNo() {
        return snNo;
    }

    public void setSnNo(String snNo) {
        this.snNo = snNo;
    }
}
